/*
 * GraficoTorta.h
 *
 *  Created on: 09/06/2012
 *      Author: sebastian
 */

#include <cairo/cairo.h>
#include <math.h>
#include <list>
#include <map>
#include <string>
#include <gtkmm-2.4/gtkmm/drawingarea.h>

#ifndef GRAFICOTORTA_H_
#define GRAFICOTORTA_H_

struct porcion{
	std::string nombre;
	float valor;
	float cRojo, cVerde, cAzul;
};


class GraficoTorta : public Gtk::DrawingArea {
public:
	GraficoTorta();
	void setColor(float cRojo, float cVerde, float cAzul);
	void agregarValor(std::string nombre, float valor);
	virtual ~GraficoTorta();
private:
	float total;
	std::list<porcion > valores;
	void dibujarPorcion(const Cairo::RefPtr<Cairo::Context>& cr, porcion valorNuevo, float valorAnterior, int i, float pos_inicial_x, float pos_inicial_y, float radio);
	void dibujarPorcionInicial(const Cairo::RefPtr<Cairo::Context>& cr, porcion p, float pos_inicial_x, float pos_inicial_y, float radio);
protected:
	virtual bool on_expose_event(GdkEventExpose* event);
};

#endif /* GRAFICOTORTA_H_ */
